package jm.nj.demo15mian.dmeo06;

import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.Properties;
import java.util.Set;

/*
 * 通过IO+Properties:读取配置文件,把键值对保存到集合中
 * 通过反射技术创建JavaBean对象
 * 通过反射技术获取JavaBean类中setXXX方法
 * 通过反射技术执行setXXX方法给成员变量注入值
 */
public class DemoReadConfigToJavaBean {
    public static void main(String[] args) throws Exception {
        //通过IO+Properties:读取pro文件,把键值保存
        FileReader fr= new FileReader("data.properties");

        Properties prop = new Properties();

        prop.load(fr);
        //System.out.println(prop);

        Class clazz = Class.forName("jm.nj.demo15mian.dmeo06.User");

        Object obj = clazz.newInstance();


        Set<String>set = prop.stringPropertyNames();//ketset

        for (String key : set) {
            /*
            * 通过Properties拼接set方法名称
            * key:id,username,password
            * set:setId, setUsername,setPassword
            *
            * set方法= "set"+ 获取key的首字母大写+key的其他字母
            * */

            String  setMethodName= "set"+key.substring(0,1).toUpperCase()+key.substring(1);

            //System.out.println(methodName);
            String value = prop.getProperty(key);
            Method m= clazz.getMethod(setMethodName,String.class);

            m.invoke(obj,value);

            String  getM= "get"+key.substring(0,1).toUpperCase()+key.substring(1);
            Method g = clazz.getMethod(getM);
            Object objValue= g.invoke(obj);

           System.out.println(objValue);
        }
        System.out.println(obj);
    }
}

